#include <iostream>
#include "../../../src/FTensor.hpp"
#include "../test_for_zero.hpp"
using namespace FTensor;
using namespace std;

void test_T3as_09(const Tensor1<double,3> &t1_2,
                  const Tensor2<double,3,3> &t2_2,
                  const Tensor3_antisymmetric<double,3,3> &t3as_2)
{
  Index<'i',3> i;
  Index<'j',3> j;
  Index<'k',3> k;
  Index<'l',3> l;
  Index<'m',3> m;
  Index<'n',3> n;

  Number<0> N0;
  Number<1> N1;
  Number<2> N2;

  test_for_zero(t3as_2(i,j,k)*(t2_2(i,j)*t1_2(k))
		- (t3as_2(0,1,0)*t2_2(0,1)*t1_2(0)
		   + t3as_2(1,1,0)*t2_2(1,1)*t1_2(0)
		   + t3as_2(2,1,0)*t2_2(2,1)*t1_2(0)
		   + t3as_2(0,2,0)*t2_2(0,2)*t1_2(0)
		   + t3as_2(1,2,0)*t2_2(1,2)*t1_2(0)
		   + t3as_2(2,2,0)*t2_2(2,2)*t1_2(0)
		   + t3as_2(0,0,1)*t2_2(0,0)*t1_2(1)
		   + t3as_2(1,0,1)*t2_2(1,0)*t1_2(1)
		   + t3as_2(2,0,1)*t2_2(2,0)*t1_2(1)
		   + t3as_2(0,2,1)*t2_2(0,2)*t1_2(1)
		   + t3as_2(1,2,1)*t2_2(1,2)*t1_2(1)
		   + t3as_2(2,2,1)*t2_2(2,2)*t1_2(1)
		   + t3as_2(0,0,2)*t2_2(0,0)*t1_2(2)
		   + t3as_2(1,0,2)*t2_2(1,0)*t1_2(2)
		   + t3as_2(2,0,2)*t2_2(2,0)*t1_2(2)
		   + t3as_2(0,1,2)*t2_2(0,1)*t1_2(2)
		   + t3as_2(1,1,2)*t2_2(1,1)*t1_2(2)
		   + t3as_2(2,1,2)*t2_2(2,1)*t1_2(2))
		,"T3as(i,j,k)*T3dg(i,j,k)");
  test_for_zero((t2_2(i,j)*t1_2(k)*t3as_2(i,j,k))
		- (t3as_2(0,1,0)*t2_2(0,1)*t1_2(0)
		   + t3as_2(1,1,0)*t2_2(1,1)*t1_2(0)
		   + t3as_2(2,1,0)*t2_2(2,1)*t1_2(0)
		   + t3as_2(0,2,0)*t2_2(0,2)*t1_2(0)
		   + t3as_2(1,2,0)*t2_2(1,2)*t1_2(0)
		   + t3as_2(2,2,0)*t2_2(2,2)*t1_2(0)
		   + t3as_2(0,0,1)*t2_2(0,0)*t1_2(1)
		   + t3as_2(1,0,1)*t2_2(1,0)*t1_2(1)
		   + t3as_2(2,0,1)*t2_2(2,0)*t1_2(1)
		   + t3as_2(0,2,1)*t2_2(0,2)*t1_2(1)
		   + t3as_2(1,2,1)*t2_2(1,2)*t1_2(1)
		   + t3as_2(2,2,1)*t2_2(2,2)*t1_2(1)
		   + t3as_2(0,0,2)*t2_2(0,0)*t1_2(2)
		   + t3as_2(1,0,2)*t2_2(1,0)*t1_2(2)
		   + t3as_2(2,0,2)*t2_2(2,0)*t1_2(2)
		   + t3as_2(0,1,2)*t2_2(0,1)*t1_2(2)
		   + t3as_2(1,1,2)*t2_2(1,1)*t1_2(2)
		   + t3as_2(2,1,2)*t2_2(2,1)*t1_2(2))
		,"T3dg(i,j,k)*T3as(i,j,k)");
}
